﻿2026-06-21T09:30:52.9861826Z ##[group]Run cargo nextest run --workspace --no-fail-fast -E '(package(spt-daemon) & kind(test) & binary(/^(attach|brain_swap|broker|budget|daemon_e2e|daemon_lifecycle_real_brain|digest|dispatch|driven_by_selfheal|handoff|idempotent|inject_control_wedge|input_ack_deadlock|resume|shellchan|two_origin_spanning|twohost)$/)) | (package(spt) & kind(test) & binary(/^(attach_wedge_e2e|bind_cwd_project_e2e|brain_respawn_rename|brain_restart_psyche_dup_e2e|brain_split|brain_survive|dummy_harness_e2e|gateway_owner_shell_e2e|job_escape_e2e|livehost_bootgate_e2e|livehost_bootrace_e2e|livehost_nonresident_e2e|livehost_psyche_fail_e2e|n1_pairing|oneliner_e2e|resume_template_e2e|unhost_psyche_reap_e2e)$/)) | (package(spt-term) & kind(test))'
2026-06-21T09:30:52.9865741Z [36;1mcargo nextest run --workspace --no-fail-fast -E '(package(spt-daemon) & kind(test) & binary(/^(attach|brain_swap|broker|budget|daemon_e2e|daemon_lifecycle_real_brain|digest|dispatch|driven_by_selfheal|handoff|idempotent|inject_control_wedge|input_ack_deadlock|resume|shellchan|two_origin_spanning|twohost)$/)) | (package(spt) & kind(test) & binary(/^(attach_wedge_e2e|bind_cwd_project_e2e|brain_respawn_rename|brain_restart_psyche_dup_e2e|brain_split|brain_survive|dummy_harness_e2e|gateway_owner_shell_e2e|job_escape_e2e|livehost_bootgate_e2e|livehost_bootrace_e2e|livehost_nonresident_e2e|livehost_psyche_fail_e2e|n1_pairing|oneliner_e2e|resume_template_e2e|unhost_psyche_reap_e2e)$/)) | (package(spt-term) & kind(test))'[0m
2026-06-21T09:30:53.0071138Z shell: /usr/bin/bash -e {0}
2026-06-21T09:30:53.0071380Z env:
2026-06-21T09:30:53.0071600Z   SPT_REGISTRY_BUSY_TIMEOUT_MS: 30000
2026-06-21T09:30:53.0071843Z   RUSTFLAGS: -C link-arg=-fuse-ld=mold
2026-06-21T09:30:53.0072077Z ##[endgroup]
2026-06-21T09:30:54.0875984Z     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.40s
2026-06-21T09:30:54.2040709Z ────────────
2026-06-21T09:30:54.2041329Z  Nextest run ID 60019774-a553-4ee4-81d5-c9ba6b917cc1 with nextest profile: default
2026-06-21T09:30:54.2042095Z     Starting 90 tests across 39 binaries (48 binaries skipped)
2026-06-21T09:31:08.9234973Z         PASS [  14.719s] ( 1/90) spt::attach_wedge_e2e attach_wedge_dead_child_plus_dropped_pump_does_not_wedge_the_broker
2026-06-21T09:31:18.7519428Z         PASS [   9.828s] ( 2/90) spt::bind_cwd_project_e2e endpoint_run_records_cwd_and_appears_under_its_project
2026-06-21T09:32:00.5737931Z         PASS [  41.822s] ( 3/90) spt::brain_respawn_rename brain_respawns_onto_applied_bytes_after_in_place_rename
2026-06-21T09:32:28.5838417Z         PASS [  28.010s] ( 4/90) spt::brain_restart_psyche_dup_e2e brain_restart_leaves_exactly_one_psyche_per_endpoint
2026-06-21T09:32:51.2491520Z         PASS [  22.665s] ( 5/90) spt::brain_split broker_survives_brain_kill_and_respawns_it
2026-06-21T09:33:13.8138054Z         PASS [  22.565s] ( 6/90) spt::brain_split seed_anchor_survives_brain_cycle
2026-06-21T09:33:51.6700200Z         PASS [  37.856s] ( 7/90) spt::brain_survive pty_and_quic_survive_brain_process_restart_onto_swapped_binary
2026-06-21T09:34:06.6817662Z         PASS [  15.012s] ( 8/90) spt::dummy_harness_e2e endpoint_run_attach_awaits_online_before_attaching
2026-06-21T09:34:17.2628561Z         PASS [  10.581s] ( 9/90) spt::dummy_harness_e2e endpoint_run_brings_up_a_long_lived_dummy_harness_and_rc_attaches
2026-06-21T09:34:17.5513626Z         PASS [   0.289s] (10/90) spt::gateway_owner_shell_e2e gateway_typed_owner_owns_a_shell_on_every_path_keyed_on_id
2026-06-21T09:34:17.5553828Z         PASS [   0.004s] (11/90) spt::job_escape_e2e daemon_survives_terminal_close_via_session_detachment
2026-06-21T09:34:35.0897888Z         PASS [  17.534s] (12/90) spt::livehost_bootgate_e2e cold_start_does_not_revive_a_sessionless_online_latched_perch
2026-06-21T09:35:02.8141924Z         PASS [  27.724s] (13/90) spt::livehost_bootrace_e2e netless_online_live_agent_is_hosted_by_the_real_daemon_brain
2026-06-21T09:35:22.5290958Z         PASS [  19.715s] (14/90) spt::livehost_nonresident_e2e online_live_agent_with_fast_exiting_psyche_stamps_parent_and_clears_phantom
2026-06-21T09:35:36.8826972Z         PASS [  14.354s] (15/90) spt::livehost_psyche_fail_e2e online_live_agent_with_missing_psyche_binary_stamps_a_harness_reachable_error
2026-06-21T09:35:36.8863980Z         PASS [   0.004s] (16/90) spt::n1_pairing new_brain_serves_against_old_broker
2026-06-21T09:35:36.8902863Z         PASS [   0.004s] (17/90) spt::oneliner_e2e at_logon_task_launches_daemon_in_background_not_foreground
2026-06-21T09:35:36.8938187Z         PASS [   0.004s] (18/90) spt::oneliner_e2e install_script_against_staged_release
2026-06-21T09:35:51.6050603Z         PASS [  14.711s] (19/90) spt::resume_template_e2e endpoint_run_resume_selects_resume_template_in_recorded_cwd
2026-06-21T09:36:11.2499553Z         PASS [  19.645s] (20/90) spt::unhost_psyche_reap_e2e endpoint_stop_reaps_the_hosted_psyche_process
2026-06-21T09:36:11.3841113Z         PASS [   0.134s] (21/90) spt-daemon::attach attach_registers_remote_drive_detection
2026-06-21T09:36:11.4551305Z         PASS [   0.071s] (22/90) spt-daemon::attach attach_survives_target_brain_restart_exactly_once
2026-06-21T09:36:11.4863567Z         PASS [   0.031s] (23/90) spt-daemon::attach broker_spawns_the_pty_child_in_the_requested_cwd
2026-06-21T09:36:11.5230293Z         PASS [   0.037s] (24/90) spt-daemon::attach controller_restart_with_viewer_no_displace_and_viewer_survives
2026-06-21T09:36:11.5510883Z         PASS [   0.028s] (25/90) spt-daemon::attach controller_viewer_matrix_and_loud_take
2026-06-21T09:36:11.5603071Z         PASS [   0.009s] (26/90) spt-daemon::attach handoff_seeds_resume_cursor_and_resubscribes_for_resume
2026-06-21T09:36:11.6024258Z         PASS [   0.042s] (27/90) spt-daemon::attach local_attach_via_loopback_conn_rides_the_same_pump
2026-06-21T09:36:11.6498530Z         PASS [   0.047s] (28/90) spt-daemon::attach loopback_attach_to_a_prepopulated_ring_delivers_without_deadlock
2026-06-21T09:36:11.6772217Z         PASS [   0.027s] (29/90) spt-daemon::attach loopback_self_dial_is_refused_local_uses_fallback_transport
2026-06-21T09:36:11.6871436Z         PASS [   0.010s] (30/90) spt-daemon::attach re_serve_resets_resume_cursor_after_a_pre_attached_consume
2026-06-21T09:36:11.7566594Z         PASS [   0.069s] (31/90) spt-daemon::attach remote_attach_drives_a_real_pty_cross_daemon
2026-06-21T09:36:11.8416544Z         PASS [   0.085s] (32/90) spt-daemon::attach resize_is_controller_exclusive
2026-06-21T09:36:11.8942931Z         PASS [   0.053s] (33/90) spt-daemon::attach same_origin_re_subscribe_does_not_displace
2026-06-21T09:36:11.9814408Z         PASS [   0.087s] (34/90) spt-daemon::attach spt_hosted_bringup_then_cross_node_attach_drives_the_pty
2026-06-21T09:36:13.4447863Z         FAIL [   1.462s] (35/90) spt-daemon::attach wedged_viewer_does_not_stall_controller
2026-06-21T09:36:13.4448483Z   stdout ───
2026-06-21T09:36:13.4448606Z 
2026-06-21T09:36:13.4448707Z     running 1 test
2026-06-21T09:36:13.4449297Z     test wedged_viewer_does_not_stall_controller ... FAILED
2026-06-21T09:36:13.4449527Z 
2026-06-21T09:36:13.4449651Z     failures:
2026-06-21T09:36:13.4449765Z 
2026-06-21T09:36:13.4449841Z     failures:
2026-06-21T09:36:13.4450047Z         wedged_viewer_does_not_stall_controller
2026-06-21T09:36:13.4450242Z 
2026-06-21T09:36:13.4450484Z     test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 14 filtered out; finished in 1.45s
2026-06-21T09:36:13.4450822Z 
2026-06-21T09:36:13.4450932Z   stderr ───
2026-06-21T09:36:13.4451042Z 
2026-06-21T09:36:13.4451347Z     thread 'wedged_viewer_does_not_stall_controller' (3524765) panicked at crates/spt-daemon/tests/attach.rs:1071:33:
2026-06-21T09:36:13.4451925Z     ctrl event: Custom { kind: InvalidData, error: "output gap: got seq 4814 want 4504" }
2026-06-21T09:36:13.4452386Z     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2026-06-21T09:36:13.4452658Z 
2026-06-21T09:36:13.4644913Z         PASS [   0.019s] (36/90) spt-daemon::brain_swap brain_only_update_swaps_logic_with_zero_endpoint_interruption
2026-06-21T09:36:13.4842378Z         PASS [   0.020s] (37/90) spt-daemon::broker ack_false_input_suppresses_applied_frame
2026-06-21T09:36:13.4937271Z         PASS [   0.009s] (38/90) spt-daemon::broker broker_hosts_pty_child_streams_output_and_accepts_input
2026-06-21T09:36:13.5046824Z         PASS [   0.011s] (39/90) spt-daemon::broker controller_writer_reorder_consumer_view_stays_monotonic_and_session_live
2026-06-21T09:36:13.5139381Z         PASS [   0.009s] (40/90) spt-daemon::broker dead_session_subscribe_does_not_hang
2026-06-21T09:36:13.5239680Z         PASS [   0.010s] (41/90) spt-daemon::broker endpoint_keyed_inject_reaches_hosted_pty
2026-06-21T09:36:13.6515382Z         PASS [   0.127s] (42/90) spt-daemon::broker exactly_once_preserved_on_no_ack_path
2026-06-21T09:36:13.6610155Z         PASS [   0.009s] (43/90) spt-daemon::broker spawn_env_reaches_child
2026-06-21T09:36:13.6774199Z         PASS [   0.016s] (44/90) spt-daemon::broker wall_b_endpoint_run_env_then_send_reaches_pty
2026-06-21T09:36:13.6814366Z         PASS [   0.004s] (45/90) spt-daemon::budget measure_dormant_seat_budget
2026-06-21T09:36:14.3159203Z         PASS [   0.634s] (46/90) spt-daemon::daemon_e2e daemon_hosts_lifecycle_and_survives_brain_restart
2026-06-21T09:36:26.4762674Z         PASS [  12.160s] (47/90) spt-daemon::daemon_lifecycle_real_brain real_brain_process_hosts_the_psyche_for_an_online_live_endpoint
2026-06-21T09:36:26.5872639Z         PASS [   0.111s] (48/90) spt-daemon::digest harness_hosted_digest_projects_and_pushes_deltas
2026-06-21T09:36:26.6014183Z         PASS [   0.014s] (49/90) spt-daemon::dispatch classify_routes_a_node_label_feed_to_registry
2026-06-21T09:36:26.7640370Z         PASS [   0.163s] (50/90) spt-daemon::dispatch dispatcher_applies_a_notif_feed_undriven
2026-06-21T09:36:26.8912298Z         PASS [   0.127s] (51/90) spt-daemon::dispatch dispatcher_funnels_wan_messages_undriven
2026-06-21T09:36:27.0519114Z         PASS [   0.161s] (52/90) spt-daemon::dispatch dispatcher_serves_a_cross_node_shell_link
2026-06-21T09:36:27.1386143Z         PASS [   0.087s] (53/90) spt-daemon::dispatch dispatcher_serves_a_file_fetch_undriven
2026-06-21T09:36:27.2513966Z         PASS [   0.113s] (54/90) spt-daemon::dispatch dispatcher_serves_a_remote_drive_attach_undriven
2026-06-21T09:36:27.4145380Z         PASS [   0.163s] (55/90) spt-daemon::dispatch dispatcher_serves_a_subnet_serve_probe
2026-06-21T09:36:27.7787263Z         PASS [   0.364s] (56/90) spt-daemon::dispatch dispatcher_serves_a_sync_pull_undriven
2026-06-21T09:36:27.8743492Z         PASS [   0.096s] (57/90) spt-daemon::dispatch dispatcher_serves_an_update_pull_undriven
2026-06-21T09:36:28.0360167Z         PASS [   0.162s] (58/90) spt-daemon::dispatch dispatcher_surfaces_a_remote_won_notif_at_the_winning_node
2026-06-21T09:36:28.1528776Z         PASS [   0.117s] (59/90) spt-daemon::dispatch dispatcher_survives_an_unknown_stream
2026-06-21T09:36:28.4716397Z         PASS [   0.319s] (60/90) spt-daemon::driven_by_selfheal gap_a_live_session_controller_by_is_ambiguous_so_reconcile_must_not_clear
2026-06-21T09:36:28.4774749Z         PASS [   0.006s] (61/90) spt-daemon::driven_by_selfheal gap_b_sessionless_perch_reconcile_offlines_and_clears_driven_by
2026-06-21T09:36:28.5067146Z         PASS [   0.029s] (62/90) spt-daemon::handoff brain_restart_survives_gaplessly_with_fresh_gen_start
2026-06-21T09:36:28.5211359Z         PASS [   0.014s] (63/90) spt-daemon::idempotent pty_writes_are_exactly_once_across_brain_crashes
2026-06-21T09:36:31.5356699Z         PASS [   3.014s] (64/90) spt-daemon::inject_control_wedge a_backed_up_controller_does_not_wedge_the_session
2026-06-21T09:36:50.5253687Z         FAIL [  18.990s] (65/90) spt-daemon::inject_control_wedge a_journaled_input_wedge_does_not_starve_a_concurrent_rc_attach
2026-06-21T09:36:50.5255219Z   stdout ───
2026-06-21T09:36:50.5255433Z 
2026-06-21T09:36:50.5256653Z     running 1 test
2026-06-21T09:36:50.5257070Z     test a_journaled_input_wedge_does_not_starve_a_concurrent_rc_attach ... FAILED
2026-06-21T09:36:50.5257408Z 
2026-06-21T09:36:50.5257557Z     failures:
2026-06-21T09:36:50.5258071Z 
2026-06-21T09:36:50.5258195Z     failures:
2026-06-21T09:36:50.5258496Z         a_journaled_input_wedge_does_not_starve_a_concurrent_rc_attach
2026-06-21T09:36:50.5258773Z 
2026-06-21T09:36:50.5259196Z     test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 9 filtered out; finished in 18.98s
2026-06-21T09:36:50.5259863Z 
2026-06-21T09:36:50.5260040Z   stderr ───
2026-06-21T09:36:50.5260277Z     PUMP_IPC_READER: spawned
2026-06-21T09:36:50.5260554Z     PUMP_IPC_READER: spawned
2026-06-21T09:36:50.5260803Z     PUMP_IPC_READER: exited
2026-06-21T09:36:50.5261850Z     === W1b JOURNAL-WEDGE GATE: journaled_ops_pumped=11255 concurrent_attach_subscribed=true attach_received_pty_output=false (fixed = both true; pre-fix on Unix: subscribed=false — attach wedged on the held journal lock) ===
2026-06-21T09:36:50.5262679Z 
2026-06-21T09:36:50.5263074Z     thread 'a_journaled_input_wedge_does_not_starve_a_concurrent_rc_attach' (3525567) panicked at crates/spt-daemon/tests/inject_control_wedge.rs:750:5:
2026-06-21T09:36:50.5263890Z     the concurrent attach must actually RECEIVE PTY output from the child (not just liveness): no FLOOD bytes rendered over the real attach pump.
2026-06-21T09:36:50.5264486Z     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2026-06-21T09:36:50.5264755Z 
2026-06-21T09:36:50.7594610Z         PASS [   0.234s] (66/90) spt-daemon::inject_control_wedge g1_choreography_happy_path_payload_reaches_pty_and_controller_keeps_control
2026-06-21T09:37:07.4577385Z         FAIL [  16.698s] (67/90) spt-daemon::inject_control_wedge g2_no_commit_deadline_faults_binary_and_does_not_wedge_controller_input
2026-06-21T09:37:07.4578698Z   stdout ───
2026-06-21T09:37:07.4578922Z 
2026-06-21T09:37:07.4579169Z     running 1 test
2026-06-21T09:37:07.4579561Z     test g2_no_commit_deadline_faults_binary_and_does_not_wedge_controller_input ... FAILED
2026-06-21T09:37:07.4579909Z 
2026-06-21T09:37:07.4580004Z     failures:
2026-06-21T09:37:07.4580161Z 
2026-06-21T09:37:07.4580248Z     failures:
2026-06-21T09:37:07.4580558Z         g2_no_commit_deadline_faults_binary_and_does_not_wedge_controller_input
2026-06-21T09:37:07.4580863Z 
2026-06-21T09:37:07.4581152Z     test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 9 filtered out; finished in 16.69s
2026-06-21T09:37:07.4581530Z 
2026-06-21T09:37:07.4581685Z   stderr ───
2026-06-21T09:37:07.4581900Z     PUMP_IPC_READER: spawned
2026-06-21T09:37:07.4582297Z     ENDPOINT_INJECT:xlate-g2-ep (57 bytes → translation binary)
2026-06-21T09:37:07.4582920Z     TRANSLATION_FAULT: no {commit} within INJECT_COMMIT_DEADLINE — terminating binary, reverting to raw inject
2026-06-21T09:37:07.4583425Z     PUMP_IPC_READER: spawned
2026-06-21T09:37:07.4583857Z     ENDPOINT_INJECT:xlate-g2-ep (35 bytes, idle-direct — activity not yet gated)
2026-06-21T09:37:07.4584247Z     PUMP_IPC_READER: spawned
2026-06-21T09:37:07.4585168Z     === W2 G2 NO-COMMIT FAULT GATE: delivered=true op_flushed=false sessions_answered=true delivered2=true raw_fallback_reached=false (op_flushed=true → controller input never wedged; raw_fallback → binary faulted) ===
2026-06-21T09:37:07.4585913Z 
2026-06-21T09:37:07.4586386Z     thread 'g2_no_commit_deadline_faults_binary_and_does_not_wedge_controller_input' (3525641) panicked at crates/spt-daemon/tests/inject_control_wedge.rs:1196:5:
2026-06-21T09:37:07.4587749Z     after the commit deadline the floor must RELEASE and buffered operator keystrokes must flush to the PTY — the controller's input must NOT wedge (the mandatory bounded-buffer guard; doyle non-negotiable = never park forever)
2026-06-21T09:37:07.4588735Z     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2026-06-21T09:37:07.4589128Z     PUMP_IPC_READER: exited
2026-06-21T09:37:07.4589268Z 
2026-06-21T09:37:07.9941664Z         PASS [   0.536s] (68/90) spt-daemon::inject_control_wedge g3_content_free_ping_never_duplicates_operator_keystrokes_into_binary
2026-06-21T09:37:08.1140952Z         PASS [   0.120s] (69/90) spt-daemon::inject_control_wedge g4_translation_child_is_reaped_no_zombie_after_session_down
2026-06-21T09:37:08.4067124Z         PASS [   0.293s] (70/90) spt-daemon::inject_control_wedge injecting_a_large_payload_into_a_stdin_ignoring_child
2026-06-21T09:37:27.2741903Z         FAIL [  18.867s] (71/90) spt-daemon::inject_control_wedge p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker
2026-06-21T09:37:27.2742970Z   stdout ───
2026-06-21T09:37:27.2743085Z 
2026-06-21T09:37:27.2743175Z     running 1 test
2026-06-21T09:37:27.2743461Z     test p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker ... FAILED
2026-06-21T09:37:27.2743738Z 
2026-06-21T09:37:27.2743824Z     failures:
2026-06-21T09:37:27.2743934Z 
2026-06-21T09:37:27.2744006Z     failures:
2026-06-21T09:37:27.2744243Z         p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker
2026-06-21T09:37:27.2744481Z 
2026-06-21T09:37:27.2744699Z     test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 9 filtered out; finished in 18.86s
2026-06-21T09:37:27.2745013Z 
2026-06-21T09:37:27.2745107Z   stderr ───
2026-06-21T09:37:27.2745290Z     PUMP_IPC_READER: spawned
2026-06-21T09:37:27.2745498Z     PUMP_IPC_READER: spawned
2026-06-21T09:37:27.2745700Z     PUMP_IPC_READER: spawned
2026-06-21T09:37:27.2745890Z     PUMP_IPC_READER: exited
2026-06-21T09:37:27.2746967Z     === P0 PASTE-WEDGE GATE: pumped=39300 keystroke_accepted=true concurrent_attach_subscribed=true attach_received_output=false backpressured=true backpressure_after_stop=Some(true) (fixed = subscribed+got_output+keystroke_accepted true; pre-fix: parked dispatch thread → subscribed=false / no output) ===
2026-06-21T09:37:27.2747842Z 
2026-06-21T09:37:27.2748218Z     thread 'p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker' (3525751) panicked at crates/spt-daemon/tests/inject_control_wedge.rs:1996:5:
2026-06-21T09:37:27.2749582Z     the concurrent attach must actually RECEIVE PTY output from the flooding child (not just liveness) while the paste write is parked — output delivery does not go through the input writer, so receiving bytes proves the dispatch serviced this attach despite the parked write.
2026-06-21T09:37:27.2750499Z     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2026-06-21T09:37:27.2750747Z 
2026-06-21T09:37:27.6095471Z         PASS [   0.335s] (72/90) spt-daemon::inject_control_wedge w5_a1_locally_driven_session_reports_controller_by_none
2026-06-21T09:37:31.6684477Z         FAIL [   4.059s] (73/90) spt-daemon::inject_control_wedge w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some
2026-06-21T09:37:31.6685424Z   stdout ───
2026-06-21T09:37:31.6685570Z 
2026-06-21T09:37:31.6685684Z     running 1 test
2026-06-21T09:37:31.6686090Z     test w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some ... FAILED
2026-06-21T09:37:31.6686570Z 
2026-06-21T09:37:31.6686757Z     failures:
2026-06-21T09:37:31.6686987Z 
2026-06-21T09:37:31.6687139Z     failures:
2026-06-21T09:37:31.6687496Z         w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some
2026-06-21T09:37:31.6687821Z 
2026-06-21T09:37:31.6688096Z     test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 9 filtered out; finished in 4.05s
2026-06-21T09:37:31.6688479Z 
2026-06-21T09:37:31.6688623Z   stderr ───
2026-06-21T09:37:31.6688856Z     PUMP_IPC_READER: spawned
2026-06-21T09:37:31.6689476Z     PUMP_IPC_READER: spawned
2026-06-21T09:37:31.6689791Z     PUMP_IPC_READER: spawned
2026-06-21T09:37:31.6690975Z     === W5 A2 CHARACTERIZATION: subscribed=true driven_after_attach=Some("d7923173b19bf9255b0184d612969a9bfa8fa5deb30843047d073950581d8d3b") cby_attached=Some(Some("d7923173b19bf9255b0184d612969a9bfa8fa5deb30843047d073950581d8d3b")) session_still_listed=true cby_after_abandon=Some(None) driven_after_abandon=None ===
2026-06-21T09:37:31.6694146Z     === W5 A2 VERDICT: controller_by==None sufficient for Gap A? true (false ⇒ wedged slot stays Some(origin) ⇒ the lost-detach fix must be broker-side eviction — a reconcile `controller_by==None` check alone does NOT catch this; it only catches A1 / Gap B) ===
2026-06-21T09:37:31.6695390Z 
2026-06-21T09:37:31.6695874Z     thread 'w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some' (3525807) panicked at crates/spt-daemon/tests/inject_control_wedge.rs:1671:9:
2026-06-21T09:37:31.6697532Z     A2: an abandoned remote controller on an IDLE session must STILL read controller_by == Some(origin) (the slot does not self-clear without output-drain-evict or a clean EOF) — proving controller_by==None is NOT a sufficient Gap-A signal for the production wedged-pump case; the lost-detach clear must be broker-side eviction. Got: Some(None)
2026-06-21T09:37:31.6698637Z     note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
2026-06-21T09:37:31.6698917Z 
2026-06-21T09:37:33.5461303Z         PASS [   1.878s] (74/90) spt-daemon::input_ack_deadlock input_flood_through_serve_attach_does_not_deadlock_broker
2026-06-21T09:37:35.5665288Z         PASS [   2.020s] (75/90) spt-daemon::resume cold_start_resumes_all_sessions_from_the_broker_cursor
2026-06-21T09:37:39.7759389Z         PASS [   4.209s] (76/90) spt-daemon::resume resume_below_ring_floor_clamps_forward_without_gap_error
2026-06-21T09:37:40.5915447Z         PASS [   0.816s] (77/90) spt-daemon::resume resume_mode_brain_spawning_new_sessions_delivers_each
2026-06-21T09:37:40.6792686Z         PASS [   0.088s] (78/90) spt-daemon::shellchan hung_shell_stalls_no_other_owner
2026-06-21T09:37:40.7782999Z         PASS [   0.099s] (79/90) spt-daemon::shellchan stdin_receipt_delivers_spooled_frames_exactly_once
2026-06-21T09:37:40.8533685Z         PASS [   0.075s] (80/90) spt-daemon::two_origin_spanning one_source_two_consumers_spans_and_merges
2026-06-21T09:37:40.8600096Z         PASS [   0.007s] (81/90) spt-daemon::twohost two_host_ladder_role_a
2026-06-21T09:37:40.8657397Z         PASS [   0.006s] (82/90) spt-daemon::twohost two_host_ladder_role_b
2026-06-21T09:37:40.8808883Z         PASS [   0.015s] (83/90) spt-term::dsr drain_forwards_child_output
2026-06-21T09:37:40.9061907Z         PASS [   0.025s] (84/90) spt-term::inject ctrl_c_interrupts_the_child
2026-06-21T09:37:40.9209849Z         PASS [   0.015s] (85/90) spt-term::inject send_line_reaches_child_and_preserves_order
2026-06-21T09:37:41.9272186Z         PASS [   1.006s] (86/90) spt-term::stream bounded_backpressure_stalls_an_unconsumed_reader
2026-06-21T09:37:41.9323586Z         PASS [   0.005s] (87/90) spt-term::stream delivers_every_value_under_resize
2026-06-21T09:37:41.9467049Z         PASS [   0.014s] (88/90) spt-term::surface captures_child_output_off_the_pty
2026-06-21T09:37:41.9518333Z         PASS [   0.005s] (89/90) spt-term::surface resize_under_load_does_not_hang_or_panic
2026-06-21T09:37:41.9568508Z         PASS [   0.005s] (90/90) spt-term::surface spawn_program_in_lands_the_child_in_the_requested_cwd
2026-06-21T09:37:41.9569590Z ────────────
2026-06-21T09:37:41.9570025Z      Summary [ 407.753s] 90 tests run: 85 passed, 5 failed, 0 skipped
2026-06-21T09:37:41.9570528Z         FAIL [   1.462s] (35/90) spt-daemon::attach wedged_viewer_does_not_stall_controller
2026-06-21T09:37:41.9571373Z         FAIL [  18.990s] (65/90) spt-daemon::inject_control_wedge a_journaled_input_wedge_does_not_starve_a_concurrent_rc_attach
2026-06-21T09:37:41.9572149Z         FAIL [  16.698s] (67/90) spt-daemon::inject_control_wedge g2_no_commit_deadline_faults_binary_and_does_not_wedge_controller_input
2026-06-21T09:37:41.9572954Z         FAIL [  18.867s] (71/90) spt-daemon::inject_control_wedge p0_paste_wedge_parked_write_does_not_starve_attach_or_wedge_broker
2026-06-21T09:37:41.9573800Z         FAIL [   4.059s] (73/90) spt-daemon::inject_control_wedge w5_a2_abandoned_remote_controller_idle_session_keeps_controller_by_some
2026-06-21T09:37:41.9597268Z error: test run failed
2026-06-21T09:37:41.9626515Z ##[error]Process completed with exit code 100.
